package dominio;

import persistencia.Conexion;
import persistencia.DatosException;
import persistencia.PProducto;

public class Producto {

	private int id;
	private String nombre;
	private float precio;
	private float precioEspecial;
	private float comision;
	
	public Producto() {
		
	}

	public Producto(String nombre, float precio, float precioEspecial, float comision) {
		this.nombre = nombre;
		this.precio = precio;
		this.precioEspecial = precioEspecial;
		this.comision = comision;
	}

	public int getId() {
		return id;
	}
	
	public void setId(int id) {
		this.id = id;
	}
	
	public String getNombre() {
		return nombre;
	}
	
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	
	public float getPrecio() {
		return precio;
	}
	
	public void setPrecio(float precio) {
		this.precio = precio;
	}
	
	public float getPrecioEspecial() {
		return precioEspecial;
	}

	public void setPrecioEspecial(float precioEspecial) {
		this.precioEspecial = precioEspecial;
	}
	
	public float getComision() {
		return comision;
	}

	public void setComision(float comision) {
		this.comision = comision;
	}
	
	/**
	 * 
	 * Devuelve un booleano que es verdadero si se 
	 * pudo eliminar el cliente, de otro modo es falso.
	 */
	public boolean eliminar() {
		try{
			Conexion.getInstancia().abrirConexion();
			PProducto.getInstancia().eliminar(this);
			return true;
		} catch (DatosException e){
			System.out.println(e.getMessage());
			return false;
		}finally{
			try{
				Conexion.getInstancia().cerrarConexion();
			} catch (DatosException e){
				System.out.println("Error al cerrar la conexin en el metodo eliminar de Producto:" + e.getMessage());
			}
		}
	}

	/**
	 * 
	 * Devuelve un booleano que es verdadero si se 
	 * pudo modificar el cliente, de otro modo es falso.
	 */
	public boolean modificar() {
		try{
			Conexion.getInstancia().abrirConexion();
			PProducto.getInstancia().modificar(this);
			return true;
		} catch (DatosException e){
			System.out.println(e.getMessage());
			return false;
		}finally{
			try{
				Conexion.getInstancia().cerrarConexion();
			} catch (DatosException e){
				System.out.println("Error al cerrar la conexin en el metodo modificar de Producto:" + e.getMessage());
			}
		}
	}

	/**
	 * 
	 * Devuelve un booleano que es verdadero si se 
	 * pudo guardar el cliente, de otro modo es falso.
	 */
	public boolean guardar() {
		try{
			Conexion.getInstancia().abrirConexion();
			PProducto.getInstancia().guardar(this);
			return true;
		} catch (DatosException e){
			System.out.println(e.getMessage());
			return false;
		}finally{
			try{
				Conexion.getInstancia().cerrarConexion();
			} catch (DatosException e){
				System.out.println("Error al cerrar la conexin en el metodo modificar de Producto:" + e.getMessage());
			}
		}
	}


	public boolean equals(Object arg0) {
		// TODO Auto-generated method stub
		Producto unProducto = (Producto)arg0;
		if (unProducto.getId() == this.id){
			return true;
		}else{
			return false;
		}
	}

	public String toString() {
		return this.nombre;
	}
}
